package com.ourcraft.informationcollectionsystem.service.province.roleManage;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ourcraft.informationcollectionsystem.entity.Role;
import com.ourcraft.informationcollectionsystem.entity.User;
import com.ourcraft.informationcollectionsystem.mapper.RoleMapper;
import com.ourcraft.informationcollectionsystem.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 角色管理模块调用的服务实现
 *
 * @author Z0136
 * @since 2023/11/4
 */
@Service
public class RoleManageServiceImpl implements RoleManageService {
    @Autowired
    private RoleMapper roleMapper;
    @Autowired
    private UserMapper userMapper;

    /**
     * 删除指定角色Id的角色
     *
     * @param roleId 删除的角色Id
     * @return 是否删除成功
     */
    @Override
    public Boolean deleteRole(int roleId) {
        // 默认角色不可删除
        if (roleId <= 3)
            return false;
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("role_id", roleId);
        // 已分配角色不可删除
        if (userMapper.selectCount(queryWrapper) > 0)
            return false;
        return roleMapper.deleteById(roleId) > 0;
    }

    /**
     * 根据角色信息创建新角色
     *
     * @param role 新角色信息
     * @return 是否创建成功
     */
    @Override
    public Boolean createRole(Role role) {
        return roleMapper.insert(role) > 0;
    }

    /**
     * 根据角色信息修改已有角色
     *
     * @param role 修改后的角色信息
     * @return 是否修改成功
     */
    @Override
    public Boolean modifyRole(Role role) {
        //  默认角色不可修改
        if (role.getRoleId() <= 3)
            return false;
        return roleMapper.updateById(role) > 0;
    }
}
